#ifndef _GRAPHE_
#define _GRAPHE_

#include "liste.hpp"
#include "element_generique.hpp"

#include "structure.hpp"

using namespace std;

struct graphe {
    Noeud ** noeuds;
    int nb_noeuds;
    int capa_noeuds;

    Arc ** arcs;
    int nb_arcs;
    int capa_arcs;
};

void initGraphe(graphe &g, bool verbose = false);

void ajoutNoeud(graphe &g, const string & nomNoeud, bool verbose = false);

void ajoutNoeud(graphe &g, Noeud* n, bool verbose = false);

void afficherGraphe(const graphe &g, bool verbose = false);

void testamentGraphe(graphe &g, bool verbose = false);

int ajoutArc(graphe &g, const string &src, const string &dst, int val = 0, bool verbose = false);

int chercherNoeud (const graphe &g, const string & nomNoeud, bool verbose = false);
/* renvoie l'indice du noeud dont la valeur est égale à nomNoeud, -1 sinon */

int chercherArc (const graphe &g, const string & source, const string & destination, bool verbose = false);
#endif // _GRAPHE_
